/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Dato;

import Objetos.Vehiculos;
import Utilitarios.Conexion;
import java.lang.Object;
import java.sql.*;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Omar Heráclides
 */
public class DVehiculo {

    static Connection con = null;
    static ResultSet rs = null;
    static Statement st = null;

    public static ResultSet Select(String query) throws SQLException {

        Conexion conex = new Conexion();
        st = conex.ObtenerConexion();
        rs = st.executeQuery(query);
        return rs;
    }

    public static void Insert(String query) throws SQLException {

        Conexion conex = new Conexion();
        st = conex.ObtenerConexion();
        st.execute(query);
        st.close();
    }

    public static void UpDate(String query) throws SQLException {

        Conexion conex = new Conexion();
        st = conex.ObtenerConexion();
        st.execute(query);
        st.close();
    }

    public DefaultTableModel LimpiarTabla() {
        DefaultTableModel dtm = new DefaultTableModel();
        String titulos[] = {"Codigo", "Tipo Vehiculo", "Linea Transporte", "Empresa Transporte", "Estado", "Placa", "Año Fabricacion"};
        dtm.setColumnIdentifiers(titulos);
        Object datos[] = new Object[5];
        dtm.addRow(datos);
        return dtm;
    }

    public void AgregarVehiculo(Vehiculos objVehiculo) throws SQLException {
        String comando;
        comando = "insert INTO vehiculo (idvehiculo, idtipovehiculo, idlineadetransporte,idempresadetransporte, estado, placa, ano_fabricacion) values ";
        comando = comando + "('" + objVehiculo.getIdVehiculo() + "','" + objVehiculo.getIdTipoVehiculo() + "','" + objVehiculo.getIdLineaDeTransporte() + "','" + objVehiculo.getIdEmpresaTransporte() + "','" + objVehiculo.getIdEstado() + "','" + objVehiculo.getPlaca() + "','" + objVehiculo.getAnhoFabricacion() + "')";
//               JOptionPane.showMessageDialog(null, comando, 
//"Información", JOptionPane.INFORMATION_MESSAGE);

        this.Insert(comando);


    }

    public ArrayList<String> EmpresaTransporte() throws SQLException {
        ArrayList<String> myArr = new ArrayList<String>();
        String comando;
        comando = "select nombre from Empresa_de_Transporte";
        ResultSet rs;
        rs = Select(comando);

        while (rs.next()) {
            myArr.add((String) rs.getString(1));
        }
        return myArr;
    }

    public String ObtenerIdEmpresaTransporte(String nombre) throws SQLException {
        String comando;
        String id = "";
        comando = "select idempresadetransporte from empresa_de_transporte where nombre='" + nombre + "'";
        ResultSet rs;
        rs = Select(comando);
        while (rs.next()) {
            id = (String) rs.getString(1).trim();
            System.out.println("id antes empresa trim=|" + id + "|");
            id.trim();
        }
        System.out.println("id despues empresa trim=|" + id + "|");
        return id;
    }

    public ArrayList<String> ObtenerLineaTransporte(String id) throws SQLException {
        ArrayList<String> myArr = new ArrayList<String>();
        String comando;
        comando = "select nombre from linea_de_transporte where idempresadetransporte='" + id + "'";
        ResultSet rs;
        rs = Select(comando);
        while (rs.next()) {
            myArr.add((String) rs.getString(1));
        }
        return myArr;
    }

    public ArrayList<String> CargarTipoVehiculo() throws SQLException {
        String comando;
        ArrayList<String> myArr = new ArrayList<String>();
        comando = "select nombre from tipovehiculo";
        ResultSet rs;
        rs = Select(comando);
        while (rs.next()) {
            myArr.add((String) rs.getString(1));
        }
        return myArr;
    }

    public DefaultTableModel SelectVehiculo(String text, String var, String estado) throws SQLException {
        String cadena = "";
        String nomEmpresa = "";
        DefaultTableModel dtm = new DefaultTableModel();
        String titulos[] = {"Codigo", "Empresa de Transporte", "Linea de Transporte", "Placa", "Estado", "Año de Adquisición"};
        dtm.setColumnIdentifiers(titulos);
        if (var.equals("Placa") == true) {
            cadena = "select * from vehiculo where placa='" + text + "'";
        } else {
            if (var.equals("Empresa") == true) {
                nomEmpresa = this.ObtenerIdEmpresaTransporte(text);
                cadena = "select * from vehiculo where idempresadetransporte='" + nomEmpresa + "'";
            } else {
                cadena = "select * from vehiculo where estado= '" + estado + "'";
                System.out.println(cadena);
            }
        }
        Vehiculos objVehiculo = new Vehiculos();
        Object datos[] = new Object[6];
        ResultSet rs;
        rs = Select(cadena);

        while (rs.next()) {
            objVehiculo.setIdVehiculo((String) rs.getString(1));
            objVehiculo.setIdTipoVehiculo(rs.getString(2));
            objVehiculo.setIdLineaDeTransporte(rs.getString(3));
            objVehiculo.setIdEmpresaTransporte(rs.getString(4));
            objVehiculo.setPlaca(rs.getString(5));
            objVehiculo.setAnhoFabricacion(rs.getString(6));
            objVehiculo.setIdEstado(rs.getString(7));

            datos[0] = objVehiculo.getIdVehiculo();
            datos[1] = this.ObtenerEmpresaTransporte(objVehiculo.getIdEmpresaTransporte());
            datos[2] = this.ObtenerLineaTrasporte(objVehiculo.getIdLineaDeTransporte());
            datos[3] = objVehiculo.getPlaca();
            datos[4] = objVehiculo.getIdEstado();
            datos[5] = objVehiculo.getAnhoFabricacion();
            dtm.addRow(datos);
        }
//                  
        return dtm;
    }

    public DefaultTableModel MostrarVehiculo() throws SQLException {

        DefaultTableModel dtm = new DefaultTableModel();
        String titulos[] = {"Codigo", "Empresa de Transporte", "Linea de Transporte", "Placa", "Estado", "Año de Adquisición", "Tipo de Vehiculo"};
        dtm.setColumnIdentifiers(titulos);
        Object datos[] = new Object[7];
        Vehiculos objVehiculo = new Vehiculos();
        ResultSet rs;
        rs = Select("select * from vehiculo where estado=1");
        System.out.println("MOstara Vehiculo 1");
        while (rs.next()) {
            objVehiculo = new Vehiculos();
            objVehiculo.setIdVehiculo((String) rs.getString(1));
            objVehiculo.setIdTipoVehiculo((String) rs.getString(2));
            objVehiculo.setIdLineaDeTransporte((String) rs.getString(3));
            objVehiculo.setIdEmpresaTransporte((String) rs.getString(4));
            objVehiculo.setPlaca((String) rs.getString(5));
            objVehiculo.setAnhoFabricacion((String) rs.getString(6));
            objVehiculo.setIdEstado((String) rs.getString(7));            

            datos[0] = objVehiculo.getIdVehiculo();
            datos[1] = ObtenerEmpresaTransporte(objVehiculo.getIdEmpresaTransporte());
            datos[2] = ObtenerLineaTrasporte(objVehiculo.getIdLineaDeTransporte());
            datos[3] = objVehiculo.getPlaca();
            datos[4] = objVehiculo.getIdEstado();
            datos[5] = objVehiculo.getAnhoFabricacion(); 
            datos[6] = ObtenerTipoVehiculo(objVehiculo.getIdTipoVehiculo());
            System.out.println(datos[0].toString());
            dtm.addRow(datos);
        }
        rs.close();
        return dtm;
    }

    private String ObtenerLineaTrasporte(String cad) throws SQLException {
        String cadena;
        cadena = "Select nombre from linea_de_transporte where idlineadetransporte='" + cad + "'";
        ResultSet rs;
        rs = Select(cadena);
        while (rs.next()) {
            return rs.getString(1);
        }
        return "";
    }

    private String ObtenerEmpresaTransporte(String cad) throws SQLException {
        String cadena;
        cadena = "Select nombre from empresa_de_transporte where idempresadetransporte='" + cad + "'";
        rs = Select(cadena);
        while (rs.next()) {
            return rs.getString(1);
        }
        return "";
    }

    public String ObtenerIdLineaTransporte(String nombre) throws SQLException {
        String cadena;
        String id = "";
        cadena = "Select idlineadetransporte from linea_de_transporte where nombre='" + nombre + "'";
        ResultSet rs;
        rs = Select(cadena);
        while (rs.next()) {
            id = rs.getString(1);
            System.out.println("Linea id antes trim=" + id);
            id.trim();
        }
        System.out.println("Linea id=" + id);
        return id;
    }

    public String ObtenerIdTipoVehiculo(String nombre) throws SQLException {
        String cadena;
        String id = "";
        System.out.println("Entroooo a Tipo Vehiculoooo");
        cadena = "Select idtipovehiculo from tipovehiculo where nombre='" + nombre + "'";
        ResultSet rs;
        rs = Select(cadena);
        while (rs.next()) {
            id = rs.getString(1).trim();
            System.out.println("id tipo vehiculo" + id+"aaa");   
            id.trim();
        }
        return id;
    }
    
    public String ObtenerCantidadSobranteLineas(String cod) throws SQLException{
     String cadena;
        String id = "";
        System.out.println("Entroooo a Tipo Vehiculoooo");
        cadena = "Select count(*) from linea_de_transporte where idempresadetransporte <'" + cod + "'";
        ResultSet rs;
        rs = Select(cadena);
        while (rs.next()) {
            id = rs.getString(1).trim();
            System.out.println("id LV_cantidad" + id+"aaa");   
            id.trim();
        }
        return id;
    }

    public String ObtenerIdSecuenciaVehiculo() throws SQLException {
        String cadena;
        String num = "0";
        cadena = "Select Max(idvehiculo) from vehiculo";
        ResultSet rs;
        rs = Select(cadena);
        while (rs.next()) {
            num = rs.getString(1);
            return num;
        }
        return "";
    }

    public void ModificarVehiculo(Vehiculos objVehiculo) throws SQLException {
        String comando;

        comando = "UPDATE vehiculo SET placa='" + objVehiculo.getPlaca() + "', idtipovehiculo='" + objVehiculo.getIdTipoVehiculo() + "',idlineadetransporte= '" + objVehiculo.getIdLineaDeTransporte() + "', idempresadetransporte='" + objVehiculo.getIdEmpresaTransporte() + "', ano_fabricacion='" + objVehiculo.getAnhoFabricacion() + "'";
        comando = comando + " WHERE idvehiculo='" + objVehiculo.getIdVehiculo() + "'";
        JOptionPane.showMessageDialog(null, comando, "Información", JOptionPane.INFORMATION_MESSAGE);                                             
        UpDate(comando);
    }

    public void EliminarVehiculo(String codVehiculo) throws SQLException {
        String comando;
        comando = "UPDATE vehiculo SET estado=0";
        comando = comando + " WHERE idvehiculo='" + codVehiculo + "'";
        UpDate(comando);
    }

    private String ObtenerTipoVehiculo(String idTipoVehiculo) throws SQLException {
        String cadena;
        String nombre="";
        cadena = "Select nombre from tipovehiculo where idtipovehiculo='" + idTipoVehiculo + "'";
        rs = Select(cadena);
        while (rs.next()) {
            nombre=(String) rs.getString(1);
        }
        return nombre.trim();
    }
}
